Skip to main content

The same pattern everywhere

In every host, three things stay the same:
  1. Construct a DialogMachine with a flow, an LLM URI, and tools
  2. Route inbound text to dialog_machine.turn(text)
  3. Send the reply text back to the host’s output channel
The host varies; the SuperDialog code is identical.
# This object works in every host below
from superdialog import DialogMachine, Flow

dialog_machine = DialogMachine(
    flow=Flow.load("kyc.json"),
    llm="anthropic/claude-haiku-4-5",
    tools=[...],
)

Choose your host

CLI chatbot

Zero infrastructure. Best for testing and prompt tuning.

LiveKit

Voice agent via Agent(llm=DialogMachineLLM(...)) plugin.

PipeCat

Drop-in FrameProcessor for PipeCat pipelines.

FastAPI

REST endpoint for text chatbots and web widgets.

Unpod Voice

Plug your DialogMachine into an Unpod AgentRunner session — no extra server needed.

Unit testing

Because SuperDialog is text-only, every dialog is unit-testable.

Lines of code comparison

HostAdapterExtra LoC
CLINone - direct input()/print() or superdialog chat~5
LiveKitDialogMachineLLM~8
PipeCatmake_processor~12
FastAPIFastAPIRouter or direct route~6
Unpod Voice (SDK)unpod.AgentRunner + session.dialog_machine~6
Unit testNone - direct calls~3
Custom (Slack, Discord, etc.)None - direct callback~3